package cn.edu.ustc.xrovers.serviceImpl;

import java.util.List;

import cn.edu.ustc.xrovers.dao.PaginationDao;
import cn.edu.ustc.xrovers.dto.PageBean;
import cn.edu.ustc.xrovers.service.PaginationService;

/**
 * 分页查询Service实现类
 * @author paddy
 *
 */
public class PaginationServiceImpl implements PaginationService {

	private PaginationDao pd;
	
	/**
	 * 根据查询条件分页查询
	 * @param pageSize 每页大小
	 * @param currentPage 当前第几页
	 * @return 封闭了分页信息(包括记录集list)的Bean
	 */
	public PageBean queryForPage(final String hql, int pageSize,int page){

		int allRow = pd.getAllRowCount(hql); //总记录数
		int totalPage = PageBean.countTotalPage(pageSize, allRow); //总页数
		final int offset = PageBean.countOffset(pageSize, page); //当前页开始记录
		final int length = pageSize; //每页记录数
		final int currentPage = PageBean.countCurrentPage(page);
		List<Object> list = pd.queryForPage(hql,offset, length); //"一页"的记录

		//把分页信息保存到Bean中
		PageBean pageBean = new PageBean();
		pageBean.setPageSize(pageSize); 
		pageBean.setCurrentPage(currentPage);
		pageBean.setAllRow(allRow);
		pageBean.setTotalPage(totalPage);
		pageBean.setList(list);
		pageBean.init();
		return pageBean;
	}
	
	/*getset方法*/
	public void setPd(PaginationDao pd) {
		this.pd = pd;
	}
	public PaginationDao getPd() {
		return pd;
	}

}
